package com.glink.manage.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.glink.common.exception.GeneralSimpleException;
import com.glink.manage.domain.MenuBean;
import com.glink.manage.dto.menu.MenuFunctionPointsSaveRequestDTO;
import com.glink.manage.dto.menu.MenuFunctionPointsUpdateRequestDTO;
import com.glink.manage.dto.menu.MenuSaveRequestDTO;
import com.glink.manage.dto.menu.MenuUpdateRequestDTO;
import com.glink.manage.vo.menu.MenuBranchVO;
import com.glink.manage.vo.menu.MenuFunctionInfoVO;
import com.glink.manage.vo.menu.MenuInfoVO;
import com.glink.manage.vo.menu.MenuSimpleInfoVO;

import java.util.List;

public interface MenuService extends IService<MenuBean> {

    /**
     * 查询所有菜单，排除掉按钮
     * @return 菜单列表
     */
    List<MenuInfoVO> getMenuList();
 
    int deleteResourceById(String id) throws GeneralSimpleException;

    /**
     * 根据类型列表查询菜单信息 
     * @param typeList 类别列表
     * @return 菜单信息
     */
    List<MenuBranchVO> findAllMenuListByType(List<String> typeList);
    
    List<MenuSimpleInfoVO> getMenuList(List<String> list);

    List<MenuFunctionInfoVO> getButtonList(String pid);

    /**
     * 新增菜单
     * @param dto 菜单信息
     * @return 菜单信息
     */
    MenuInfoVO insertMenu(MenuSaveRequestDTO dto) throws GeneralSimpleException;

    /**
     * 更新菜单
     * @param dto 菜单信息
     * @return 菜单信息
     */
    MenuInfoVO updateMenu(MenuUpdateRequestDTO dto) throws GeneralSimpleException;

    /**
     * 新增功能点
     * @param dto 功能点信息
     * @return 功能点信息
     */
    MenuFunctionInfoVO insertFunctionPoints(MenuFunctionPointsSaveRequestDTO dto) throws GeneralSimpleException;

    /**
     * 更新功能点
     * @param dto 功能点信息
     * @return 功能点信息
     */
    MenuFunctionInfoVO updateFunctionPoints(MenuFunctionPointsUpdateRequestDTO dto) throws GeneralSimpleException;

    /**
     * 根据菜单ID获取菜单信息
     * @param menuId 菜单ID
     * @return 菜单信息
     */
    MenuInfoVO getMenuInfoById(String menuId);

    /**
     * 根据菜单ID查询菜单信息
     * @param menuIdList 菜单ID
     * @return 菜单信息
     */
    List<MenuBranchVO> findAllMenuListById(List<String> menuIdList);
}
